In integrated electronic devices, such as micro-processors or other system on a chip (SOC) designs, register files are an important internal design element. Register files may be used to allow a device to maintain internal states. They may also be used to buffer data, to buffer control commands, and in a wide variety of other design applications to store values internal to the design. One important design parameter of a register file is the number of ports which a register file provides. A port can be either a read port (allow data to be read), a write port (allow the state of the register to be set), or a read-write port (which may function as either a read port or a write port). A register file is different from a register in that a register file uses a set of address bits to help determine which registers, often referred to as “base cells”, in the register file should be operated on.
FIG. 1 illustrates a typical register file 100 which has a plurality of rows of base cells such as base cell 110. Each row of base cells corresponds to selection logic such as 120 and 130. Base cells in the row are coupled to the selection logic so that the selection logic can select an appropriate base cell to be operated on by a port according to an address of the port. The selection method may be fully or partially contained within the base cell or be solely external to the base cell. FIG. 1 is an example of read selection logic being external to the base cell.
There may be different design approaches to constructing a base cell of a register file. FIG. 2 illustrates a structure of a base cell 200 of a register file. Base cell 200 includes three basic parts: a center part 210, a read port 220, and a write port 230. Center part 210 may also be referred to as a “data storage” part which includes a stored cell state. Typically only one copy of the center part structure exists for each base cell. Read port 220 is typically replicated for each read port of the register file. Similarly write port 230 is replicated for each write port of the register file. For basic cells which have a read-write port, a “read port” and a “write port” are combined into one structure.